var VERSION = "1.8";
var vrv = vrv || {};
vrv.android = {};
vrv.jssdk = {};
vrv.util = {};
vrv._init = {};
vrv._ready = {};
vrv.callpc = {};
vrv._ready.fn = {};
vrv.android = {
    callback: function (f, c, a) {
        try {
            if (vrv._init.debug) {
                alert(f + ":" + a)
            }
            var b = vrv.util.getSuccess(c);
            if (typeof b == "function") {
                b.call(this, JSON.parse(a))
            }
        } catch (d) {
            alert(d.message)
        }
    },
    takePhoto: function (a) {
        android.takePhoto(vrv.util.pre(a))
    },
    getUnreadMessage: function (a) {
        android.getUnreadMessage(vrv.util.pre(a))
    },
    getAccountInfo: function (a) {
        android.getUserInfo(vrv.util.pre(a))
    },
    sendMessage: function (a) {
        android.sendMessage(vrv.util.pre(a))
    },
    portraitUrl: function (a) {
        android.portraitUrl(vrv.util.pre(a))
    },
    getUserName: function (a) {
        android.getUserName(vrv.util.pre(a))
    },
    getContactList: function (a) {
        android.getContacts(vrv.util.pre(a))
    },
    getLocalFiles: function (a) {
        a = vrv.util.addSize(a);
        android.getLocalFiles(vrv.util.pre(a))
    },
    getGroupList: function (a) {
        android.getGroupsInfo(vrv.util.pre(a))
    },
    getLocalPhotos: function (a) {
        a = vrv.util.addSize(a);
        android.getLocalPhotos(vrv.util.pre(a))
    },
    getPosition: function (a) {
        android.getPosition(vrv.util.pre(a))
    },
    showNavigationBar: function (a) {
        android.showNavigationBar(vrv.util.pre(a))
    },
    getInfoWithSweep: function (a) {
        android.getInfoWithSweep(vrv.util.pre(a))
    },
    getOrganization: function (a) {
        android.getOrganization(vrv.util.pre(a))
    },
    closeView: function (a) {
        android.closeView(vrv.util.pre(a))
    },
    getLanguage: function (a) {
        android.getLanguage(vrv.util.pre(a))
    },
    getVersionMark: function (a) {
        android.getVersionMark(vrv.util.pre(a))
    },
    copyTextToPaste: function (a) {
        android.copyTextToPaste(vrv.util.pre(a))
    },
    chatByUserID: function (a) {
        android.chatByUserID(vrv.util.pre(a))
    },
    getGroupMembers: function (a) {
        android.getGroupMembers(vrv.util.pre(a))
    },
    openFileURL: function (a) {
        android.openFileURL(vrv.util.pre(a))
    },
    openImageURL: function (a) {
        android.openImageURL(vrv.util.pre(a))
    },
    openChat: function (a) {
        android.openChat(vrv.util.pre(a))
    },
    openAudioCall: function (a) {
        android.openAudioCall(vrv.util.pre(a))
    },
    openVideoCall: function (a) {
        android.openVideoCall(vrv.util.pre(a))
    },
    openVideoCallVendor: function (a) {
        android.openVideoCallVendor(vrv.util.pre(a))
    },
    getUserIdMap: function (a) {
        android.getUserIdMap(vrv.util.pre(a))
    },
    createGroup: function (a) {
        android.createGroup(vrv.util.pre(a))
    },
    deleteGroup: function (a) {
        android.deleteGroup(vrv.util.pre(a))
    },
    getOAuthCode: function (a) {
        android.getOAuthCode(vrv.util.pre(a))
    },
    callPhone: function (a) {
        android.callPhone(vrv.util.pre(a))
    },
    audioRecord: function (a) {
        android.audioRecord(vrv.util.pre(a))
    },
    getVersion: function (b) {
        b.success({
            "version": VERSION,
            "platform": "android"
        })
    }
};
vrv.ios = {
    register: function () {
        vrv.util.fromIOS("registerMessageNotice")
    },
    callback: function (d, c, a) {
        if (vrv._init.debug) {
            alert(d + ":" + a)
        }
        var b = vrv.util.getSuccess(c);
        if (typeof b == "function") {
            b.call(this, JSON.parse(a))
        }
    },
    takePhoto: function (a) {
        vrv.util.callIOS("takePhoto", a)
    },
    getUnreadMessage: function (a) {
        vrv.util.callIOS("getUnreadMessage", a)
    },
    getAccountInfo: function (a) {
        vrv.util.callIOS("getUserInfo", a)
    },
    sendMessage: function (a) {
        vrv.util.callIOS("sendMessage", a)
    },
    portraitUrl: function (a) {
        vrv.util.callIOS("portraitUrl", a)
    },
    getUserName: function (a) {
        vrv.util.callIOS("getUserName", a)
    },
    getContactList: function (a) {
        vrv.util.callIOS("getContacts", a)
    },
    getLocalFiles: function (a) {
        a = vrv.util.addSize(a);
        vrv.util.callIOS("getLocalFiles", a)
    },
    getGroupList: function (a) {
        vrv.util.callIOS("getGroupsInfo", a)
    },
    getLocalPhotos: function (a) {
        a = vrv.util.addSize(a);
        vrv.util.callIOS("getLocalPhotos", a)
    },
    getPosition: function (a) {
        vrv.util.callIOS("getPosition", a)
    },
    showNavigationBar: function (a) {
        vrv.util.callIOS("showNavigationBar", a)
    },
    getInfoWithSweep: function (a) {
        vrv.util.callIOS("getInfoWithSweep", a)
    },
    getOrganization: function (a) {
        vrv.util.callIOS("getOrganization", a)
    },
    closeView: function (a) {
        vrv.util.callIOS("closeView", a)
    },
    getLanguage: function (a) {
        vrv.util.callIOS("getLanguage", a)
    },
    getVersionMark: function (a) {
        vrv.util.callIOS("getVersionMark", a)
    },
    copyTextToPaste: function (a) {
        vrv.util.callIOS("copyTextToPaste", a)
    },
    chatByUserID: function (a) {
        vrv.util.callIOS("chatByUserID", a)
    },
    getGroupMembers: function (a) {
        vrv.util.callIOS("getGroupMembers", a)
    },
    openFileURL: function (a) {
        vrv.util.callIOS("openFileURL", a)
    },
    openImageURL: function (a) {
        vrv.util.callIOS("openImageURL", a)
    },
    getVersion: function (b) {
        b.success({
            "version": VERSION,
            "platform": "ios"
        })
    },
    openChat: function (a) {
        vrv.util.callIOS("openChat", a)
    },
    createGroup: function (a) {
        vrv.util.callIOS("createGroup", a)
    },
    deleteGroup: function (a) {
        vrv.util.callIOS("deleteGroup", a)
    },
    openAudioCall: function (a) {
        vrv.util.callIOS("openAudioCall", a)
    },
    openVideoCall: function (a) {
        vrv.util.callIOS("openVideoCall", a)
    },
    openVideoCallVendor: function (a) {
        vrv.util.callIOS("openVideoCallVendor", a)
    },
    getOAuthCode: function (a) {
        vrv.util.callIOS("getOAuthCode", a)
    },
    getUserIdMap: function (a) {
        vrv.util.callIOS("getUserIdMap", a)
    },
    callPhone: function (a) {
        vrv.util.callIOS("callPhone", a)
    }
};
vrv.pc = {
    callback: function (g, f, i) {
        try {
            vrv._init.debug && alert(g + ":" + i);
            var j;
            if (g === "registerMessageNotice") {
                j = vrv.util._success[JSON.parse(f).uuid]
            } else {
                j = vrv.util.getSuccess(JSON.parse(f).uuid)
            }
            "function" == typeof j && j.call(this, JSON.parse(i))
        } catch (h) {
            alert(h.message)
        }
    },
    takePhoto: function (b) {
        vrv.callpc.takePhoto("takePhoto", vrv.util.pre(b))
    },
    getUnreadMessage: function (b) {
        vrv.callpc.getUnreadMessage("getUnreadMessage", vrv.util.pre(b))
    },
    getAccountInfo: function (b) {
        vrv.callpc.getAccountInfo("getAccountInfo", vrv.util.pre(b))
    },
    sendMessage: function (b) {
        vrv.callpc.sendMessage("sendMessage", vrv.util.pre(b))
    },
    portraitUrl: function (b) {
        vrv.callpc.portraitUrl("portraitUrl", vrv.util.pre(b))
    },
    getUserName: function (b) {
        vrv.callpc.getUserName("getUserName", vrv.util.pre(b))
    },
    getContactList: function (b) {
        vrv.callpc.getContactList("getContactList", vrv.util.pre(b))
    },
    getLocalFiles: function (b) {
        b = vrv.util.addSize(b);
        vrv.callpc.getLocalFiles("getLocalFiles", vrv.util.pre(b))
    },
    getGroupList: function (b) {
        vrv.callpc.getGroupList("getGroupList", vrv.util.pre(b))
    },
    getLocalPhotos: function (b) {
        b = vrv.util.addSize(b);
        vrv.callpc.getLocalPhotos("getLocalPhotos", vrv.util.pre(b))
    },
    getPosition: function (b) {
        vrv.callpc.getPosition("getPosition", vrv.util.pre(b))
    },
    showNavigationBar: function (b) {
        vrv.callpc.showNavigationBar("showNavigationBar", vrv.util.pre(b))
    },
    getInfoWithSweep: function (b) {
        vrv.callpc.getInfoWithSweep("getInfoWithSweep", vrv.util.pre(b))
    },
    getOrganization: function (b) {
        vrv.callpc.getOrganization("getOrganization", vrv.util.pre(b))
    },
    closeView: function (b) {
        vrv.callpc.closeView("closeView", vrv.util.pre(b))
    },
    getLanguage: function (b) {
        vrv.callpc.getLanguage("getLanguage", vrv.util.pre(b))
    },
    getVersionMark: function (b) {
        vrv.callpc.getVersionMark("getVersionMark", vrv.util.pre(b))
    },
    copyTextToPaste: function (b) {
        vrv.callpc.copyTextToPaste("copyTextToPaste", vrv.util.pre(b))
    },
    getGroupMembers: function (b) {
        vrv.callpc.getGroupMembers("getGroupMembers", vrv.util.pre(b))
    },
    chatByUserID: function (b) {
        vrv.callpc.chatByUserID("chatByUserID", vrv.util.pre(b))
    },
    openFileURL: function (b) {
        vrv.callpc.openFileURL("openFileURL", vrv.util.pre(b))
    },
    openImageURL: function (b) {
        vrv.callpc.openImageURL("openImageURL", vrv.util.pre(b))
    },
    registerMessageNotice: function (b) {
        vrv.callpc.registerMessageNotice("registerMessageNotice", vrv.util.pre(b))
    },
    getVersion: function (b) {
        b.success({
            "version": VERSION,
            "platform": "pc"
        })
    },
    openChat: function (b) {
        vrv.callpc.openChat("openChat", JSON.stringify(b), vrv.util.pre(b))
    },
    createGroup: function (b) {
        vrv.callpc.createGroup("createGroup", JSON.stringify(b), vrv.util.pre(b))
    },
    deleteGroup: function (b) {
        vrv.callpc.deleteGroup("deleteGroup", JSON.stringify(b), vrv.util.pre(b))
    },
    openAudioCall: function (b) {
        vrv.callpc.openAudioCall("openAudioCall", JSON.stringify(b), vrv.util.pre(b))
    },
    openVideoCall: function (b) {
        vrv.callpc.openVideoCall("openVideoCall", JSON.stringify(b), vrv.util.pre(b))
    },
    openVideoCallVendor: function (b) {
        vrv.callpc.openVideoCallVendor("openVideoCallVendor", JSON.stringify(b), vrv.util.pre(b))
    },
    getOAuthCode: function (b) {
        vrv.callpc.getOAuthCode("getOAuthCode", JSON.stringify(b), vrv.util.pre(b))
    },
    getUserIdMap: function (b) {
        vrv.callpc.getUserIdMap("getUserIdMap", JSON.stringify(b), vrv.util.pre(b))
    }
};
vrv.util.addSize = function (a) {
    return vrv.util.setDefault(a, [{
        type: "number",
        key: "size",
        val: 10,
        min: 1,
        max: 15
    }])
};
vrv.util._success = {};
vrv.util.putSuccess = function (b, a) {
    if (a && typeof a == "function") {
        vrv.util._success[b] = a
    }
};
vrv.util.getSuccess = function (b) {
    var a = vrv.util._success[b];
    delete vrv.util._success[b];
    return a
};
vrv.util.formatParams = function (b) {
    if (!b) {
        b = {}
    }
    if (b.constructor !== Object) {
        b = {}
    }
    b.uuid = vrv.util.uuid();
    var a = {
        p: JSON.stringify(b),
        uuid: b.uuid
    };
    return a
};
vrv.util.setDefault = function (c, b) {
    if (!c) {
        c = {}
    }
    if (c.constructor !== Object) {
        c = {}
    }
    for (var a in b) {
        var e = b[a];
        if (typeof c[e.key] != e.type) {
            c[e.key] = e.val
        }
        if (c[e.key] > e.max || c[e.key] < e.min) {
            c[e.key] = e.val
        }
    }
    return c
};
vrv.util.pre = function (a) {
    var b = vrv.util.formatParams(a);
    if (a) {
        vrv.util.putSuccess(b.uuid, a.success)
    }
    return b.p
};
vrv.util.callIOS = function (e, c) {
    var d = vrv.util.formatParams(c);
    var b = c.success;
    var a = function (f) {
        if (vrv._init.debug) {
            alert(e + ":" + JSON.stringify(f))
        }
        b(f)
    };
    delete c.success;
    if (navigator.userAgent.toLowerCase().indexOf("imlinkdood") != -1) {
        window.WebViewJavascriptBridge.callHandler(e, c, a)
    } else {
        vrv.ios.bridge.callHandler(e, c, a)
    }
};
vrv.util.fromIOS = function (b) {
    var a = function (c, e) {
        if (vrv._init.debug) {
            alert(b + ":" + JSON.stringify(c))
        }
        var d = {
            "success": "true"
        };
        e(d)
    };
    if (navigator.userAgent.toLowerCase().indexOf("imlinkdood") != -1) {
        window.WebViewJavascriptBridge.registerHandler(b, a)
    } else {
        vrv.ios.bridge.registerHandler(b, a)
    }
};
vrv.util.uuid = function () {
    var d = [];
    var a = "0123456789abcdef";
    for (var b = 0; b < 36; b++) {
        d[b] = a.substr(Math.floor(Math.random() * 16), 1)
    }
    d[14] = "4";
    d[19] = a.substr((d[19] & 3) | 8, 1);
    d[8] = d[13] = d[18] = d[23] = "-";
    var c = d.join("");
    return c
};
vrv.init = function (b) {
    if (vrv._init.inited) {
        return
    }
    vrv._init.inited = true;
    var d = navigator.userAgent.toLowerCase();
    if (d.indexOf("imlinkdood") != -1) {
        function a(f) {
            if (window.WebViewJavascriptBridge) {
                return f(WebViewJavascriptBridge)
            }
            if (window.WVJBCallbacks) {
                return window.WVJBCallbacks.push(f)
            }
            window.WVJBCallbacks = [f];
            var e = document.createElement("iframe");
            e.style.display = "none";
            e.src = "wvjbscheme://__BRIDGE_LOADED__";
            document.documentElement.appendChild(e);
            setTimeout(function () {
                document.documentElement.removeChild(e)
            }, 0)
        }
        a(function (e) {
            vrv.ios.register();
            vrv.ios.bridge = e;
            if (typeof vrv._ready.fn == "function") {
                vrv._ready.fn.call(this)
            } else {
                vrv._ready.r = true
            }
        });
        vrv.jssdk = vrv.ios
    } else {
        if (d.indexOf("android") != -1) {
            vrv.jssdk = vrv.android;
            if (typeof vrv._ready.fn == "function") {
                vrv._ready.fn.call(this)
            } else {
                vrv._ready.r = true
            }
        } else {
            if (d.indexOf("iphone") != -1) {
                function c(e) {
                    if (window.WebViewJavascriptBridge) {
                        e(WebViewJavascriptBridge)
                    } else {
                        document.addEventListener("WebViewJavascriptBridgeReady", function () {
                            e(WebViewJavascriptBridge)
                        }, false)
                    }
                }
                c(function (e) {
                    e.init(function (g, f) {
                        var h = {
                            "Javascript Responds": "Wee!"
                        };
                        f(h)
                    });
                    vrv.ios.bridge = e;
                    if (typeof vrv._ready.fn == "function") {
                        vrv._ready.fn.call(this)
                    } else {
                        vrv._ready.r = true
                    }
                });
                vrv.jssdk = vrv.ios
            } else {
                if (d.indexOf("qtwebengine") != -1) {
                    new QWebChannel(qt.webChannelTransport, function (e) {
                        vrv.callpc = e.objects.content;
                        vrv.callpc.callback.connect(function (h, g, f) {
                            vrv.pc.callback(h, g, f)
                        });
                        if (typeof vrv._ready.fn == "function") {
                            vrv._ready.fn.call(this)
                        } else {
                            vrv._ready.r = true
                        }
                    });
                    vrv.jssdk = vrv.pc
                }
            }
        }
    }
    if (b && b.constructor == Object) {
        vrv._init = b
    }
};
vrv.ready = function (a) {
    if (typeof a == "function") {
        if (vrv._ready.r) {
            a.call(this)
        } else {
            vrv._ready.fn = a
        }
    }
};
"use strict";
var QWebChannelMessageTypes = {
    signal: 1,
    propertyUpdate: 2,
    init: 3,
    idle: 4,
    debug: 5,
    invokeMethod: 6,
    connectToSignal: 7,
    disconnectFromSignal: 8,
    setProperty: 9,
    response: 10,
};
var QWebChannel = function (c, a) {
    if (typeof c !== "object" || typeof c.send !== "function") {
        console.error("The QWebChannel expects a transport object with a send function and onmessage callback property." + " Given is: transport: " + typeof (c) + ", transport.send: " + typeof (c.send));
        return
    }
    var b = this;
    this.transport = c;
    this.send = function (d) {
        if (typeof (d) !== "string") {
            d = JSON.stringify(d)
        }
        b.transport.send(d)
    };
    this.transport.onmessage = function (d) {
        var e = d.data;
        if (typeof e === "string") {
            e = JSON.parse(e)
        }
        switch (e.type) {
            case QWebChannelMessageTypes.signal:
                b.handleSignal(e);
                break;
            case QWebChannelMessageTypes.response:
                b.handleResponse(e);
                break;
            case QWebChannelMessageTypes.propertyUpdate:
                b.handlePropertyUpdate(e);
                break;
            default:
                console.error("invalid message received:", d.data);
                break
        }
    };
    this.execCallbacks = {};
    this.execId = 0;
    this.exec = function (d, e) {
        if (!e) {
            b.send(d);
            return
        }
        if (b.execId === Number.MAX_VALUE) {
            b.execId = Number.MIN_VALUE
        }
        if (d.hasOwnProperty("id")) {
            console.error("Cannot exec message with property id: " + JSON.stringify(d));
            return
        }
        d.id = b.execId++;
        b.execCallbacks[d.id] = e;
        b.send(d)
    };
    this.objects = {};
    this.handleSignal = function (e) {
        var d = b.objects[e.object];
        if (d) {
            d.signalEmitted(e.signal, e.args)
        } else {
            console.warn("Unhandled signal: " + e.object + "::" + e.signal)
        }
    };
    this.handleResponse = function (d) {
        if (!d.hasOwnProperty("id")) {
            console.error("Invalid response message received: ", JSON.stringify(d));
            return
        }
        b.execCallbacks[d.id](d.data);
        delete b.execCallbacks[d.id]
    };
    this.handlePropertyUpdate = function (f) {
        for (var e in f.data) {
            var g = f.data[e];
            var d = b.objects[g.object];
            if (d) {
                d.propertyUpdate(g.signals, g.properties)
            } else {
                console.warn("Unhandled property update: " + g.object + "::" + g.signal)
            }
        }
        b.exec({
            type: QWebChannelMessageTypes.idle
        })
    };
    this.debug = function (d) {
        b.send({
            type: QWebChannelMessageTypes.debug,
            data: d
        })
    };
    b.exec({
        type: QWebChannelMessageTypes.init
    }, function (e) {
        for (var f in e) {
            var d = new QObject(f, e[f], b)
        }
        for (var f in b.objects) {
            b.objects[f].unwrapProperties()
        }
        if (a) {
            a(b)
        }
        b.exec({
            type: QWebChannelMessageTypes.idle
        })
    })
};

function QObject(d, g, e) {
    this.__id__ = d;
    e.objects[d] = this;
    this.__objectSignals__ = {};
    this.__propertyCache__ = {};
    var c = this;
    this.unwrapQObject = function (l) {
        if (l instanceof Array) {
            var m = new Array(l.length);
            for (var n = 0; n < l.length; ++n) {
                m[n] = c.unwrapQObject(l[n])
            }
            return m
        }
        if (!l || !l["__QObject*__"] || l.id === undefined) {
            return l
        }
        var j = l.id;
        if (e.objects[j]) {
            return e.objects[j]
        }
        if (!l.data) {
            console.error("Cannot unwrap unknown QObject " + j + " without data.");
            return
        }
        var k = new QObject(j, l.data, e);
        k.destroyed.connect(function () {
            if (e.objects[j] === k) {
                delete e.objects[j];
                var p = [];
                for (var o in k) {
                    p.push(o)
                }
                for (var i in p) {
                    delete k[p[i]]
                }
            }
        });
        k.unwrapProperties();
        return k
    };
    this.unwrapProperties = function () {
        for (var i in c.__propertyCache__) {
            c.__propertyCache__[i] = c.unwrapQObject(c.__propertyCache__[i])
        }
    };

    function f(j, k) {
        var i = j[0];
        var l = j[1];
        c[i] = {
            connect: function (m) {
                if (typeof (m) !== "function") {
                    console.error("Bad callback given to connect to signal " + i);
                    return
                }
                c.__objectSignals__[l] = c.__objectSignals__[l] || [];
                c.__objectSignals__[l].push(m);
                if (!k && i !== "destroyed") {
                    e.exec({
                        type: QWebChannelMessageTypes.connectToSignal,
                        object: c.__id__,
                        signal: l
                    })
                }
            },
            disconnect: function (n) {
                if (typeof (n) !== "function") {
                    console.error("Bad callback given to disconnect from signal " + i);
                    return
                }
                c.__objectSignals__[l] = c.__objectSignals__[l] || [];
                var m = c.__objectSignals__[l].indexOf(n);
                if (m === -1) {
                    console.error("Cannot find connection of signal " + i + " to " + n.name);
                    return
                }
                c.__objectSignals__[l].splice(m, 1);
                if (!k && c.__objectSignals__[l].length === 0) {
                    e.exec({
                        type: QWebChannelMessageTypes.disconnectFromSignal,
                        object: c.__id__,
                        signal: l
                    })
                }
            }
        }
    }

    function a(j, i) {
        var k = c.__objectSignals__[j];
        if (k) {
            k.forEach(function (l) {
                l.apply(l, i)
            })
        }
    }
    this.propertyUpdate = function (l, j) {
        for (var m in j) {
            var k = j[m];
            c.__propertyCache__[m] = k
        }
        for (var i in l) {
            a(i, l[i])
        }
    };
    this.signalEmitted = function (j, i) {
        a(j, i)
    };

    function h(k) {
        var j = k[0];
        var i = k[1];
        c[j] = function () {
            var l = [];
            var n;
            for (var m = 0; m < arguments.length; ++m) {
                if (typeof arguments[m] === "function") {
                    n = arguments[m]
                } else {
                    l.push(arguments[m])
                }
            }
            e.exec({
                "type": QWebChannelMessageTypes.invokeMethod,
                "object": c.__id__,
                "method": i,
                "args": l
            }, function (p) {
                if (p !== undefined) {
                    var o = c.unwrapQObject(p);
                    if (n) {
                        (n)(o)
                    }
                }
            })
        }
    }

    function b(k) {
        var l = k[0];
        var j = k[1];
        var i = k[2];
        c.__propertyCache__[l] = k[3];
        if (i) {
            if (i[0] === 1) {
                i[0] = j + "Changed"
            }
            f(i, true)
        }
        Object.defineProperty(c, j, {
            configurable: true,
            get: function () {
                var m = c.__propertyCache__[l];
                if (m === undefined) {
                    console.warn('Undefined value in property cache for property "' + j + '" in object ' + c.__id__)
                }
                return m
            },
            set: function (m) {
                if (m === undefined) {
                    console.warn("Property setter for " + j + " called with undefined value!");
                    return
                }
                c.__propertyCache__[l] = m;
                e.exec({
                    "type": QWebChannelMessageTypes.setProperty,
                    "object": c.__id__,
                    "property": l,
                    "value": m
                })
            }
        })
    }
    g.methods.forEach(h);
    g.properties.forEach(b);
    g.signals.forEach(function (i) {
        f(i, false)
    });
    for (var d in g.enums) {
        c[d] = g.enums[d]
    }
}
if (typeof module === "object") {
    module.exports = {
        QWebChannel: QWebChannel
    }
};